// 和上题的区别在于，是环形

// 有两种场景
// 1. 不考虑首元素下的最大总金额
// 2. 不考虑尾元素下的最大总金额

// 结果，取这两种情况的最大值即可
function rob(nums) {
    if (nums.length === 0) {
        return 0
    }
    if (nums.length === 1) {
        return nums[0]
    }
    let result1 = robRange(nums.slice(0, nums.length - 1))
    let result2 = robRange(nums.slice(1, nums.length))
    return Math.max(result1, result2)
}

function robRange(nums) {
    let dp = new Array(nums.length).fill(0)
    dp[0] = nums[0]
    dp[1] = Math.max(nums[0], nums[1])
    for (let i = 2; i <= nums.length; i++) {
        dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i])        
    }
    return dp[nums.length - 1]
}

let nums = [2,3,2]
console.log(rob(nums))